#include <iostream>

using namespace std;
//注意事项：
//1、自动类型推导，必须推导出一致的数据类型T,才可以使用
//2、模板必须要确定出T的数据类型，才可以使用

//利用模板提供通用的交换函数
template<typename T>
void mySwap(T &a, T &b) {
    T temp = a;
    a = b;
    b = temp;
}

//1、自动类型推导，必须推导出一致的数据类型T,才可以使用
void test1() {
    int a = 10;
    int b = 20;
    char c = 'c';
    mySwap(a, b);//正确，推导出了一致的T类型
    //mySwap(b,c);//错误，推导不出一致的T类型
}

template<typename T>
void func() {
    cout << "func()函数调用" << endl;
}

//2、模板必须要确定出T的数据类型，才可以使用
void test2() {
    //func();//错误，模板不能独立使用，必须确定出T的类型
    func<int>();//利用显示指定类型的方式，给T一个类型，才可以使用该模板
}

int main() {
    test1();
    test2();
    return 0;
}